// 按表单type 初始化数据
export const initForm = {
    input: "",
    password: "",
    select: "",
    mutiSelect: new Array(),
    datepicker: "",
    dateRange: new Array(),
    inputNumber: 0,
    radio: null,
    object: new Object(),
    avatar: new Array(), // 头像
    treeSelect: "",
}

// 组装表单 数据
export function initFormData(formItems, formTarget = {}) {
    for (const item of formItems) {
        // 跳过 custom-slot 类型 custom-slot自定义插槽
        if (item.type === 'custom-slot') continue;

        formTarget[item.field] = initForm[item.type];
    }
    return formTarget;
}

// 判断表单是否为重置状态（所有字段都是默认值）
export function isFormReset(formItems = [], formData = {}) {
    for (const item of formItems) {
        // 跳过 custom-slot
        if (item.type === 'custom-slot') continue;

        const defaultValue = initForm[item.type];
        const currentValue = formData[item.field];

        // 特别注意：数组和对象需要深比较
        if (Array.isArray(defaultValue)) {
            if (!Array.isArray(currentValue) || currentValue.length !== defaultValue.length) {
                return false;
            }
            continue;
        }

        if (typeof defaultValue === 'object' && defaultValue !== null) {
            if (typeof currentValue !== 'object' || currentValue === null) {
                return false;
            }
            // 对象判断非空即可
            if (Object.keys(currentValue).length !== Object.keys(defaultValue).length) {
                return false;
            }
            continue;
        }

        // 基本类型（string, number, null）
        if (currentValue !== defaultValue) {
            return false;
        }
    }

    return true;
}

// 查找表单配置对应对象 formItems表单配置项 查找条件
export const findCurrentFormItem = (formItems = [], key, value) => {
    if (!Array.isArray(formItems) || formItems.length === 0) return null
    return formItems.find(item => item[key] === value) || null
}
